{
 "cells": [
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 实战FashionMNIST分类，重点是理解，理解模型搭建，理解咱们实战代码的每一部分",
   "id": "617fe774f1de21f8"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "导入包:并显示包的版本号，以及硬件信息",
   "id": "f0c0461ec3cad606"
  },
  {
   "cell_type": "code",
   "id": "initial_id",
   "metadata": {
    "collapsed": true,
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:50.146742Z",
     "start_time": "2025-03-05T11:22:47.882497Z"
    }
   },
   "source": [
    "import matplotlib as mpl\n",
    "import matplotlib.pyplot as plt\n",
    "import numpy as np\n",
    "import sklearn\n",
    "import pandas as pd\n",
    "from tqdm.auto import tqdm  # 进度条\n",
    "import torch\n",
    "import torch.nn as nn\n",
    "import sys\n",
    "\n",
    "# 打印python的版本号\n",
    "print(sys.version_info)  # major=3, minor=12, micro=3, releaselevel='final', serial=0\n",
    "# 打印各模块的版本\n",
    "for module in mpl, np, pd, sklearn, torch:\n",
    "    print(module.__name__, module.__version__)\n",
    "# 打印硬件信息\n",
    "device = torch.device(\"cuda:0\") if torch.cuda.is_available() else torch.device(\"cpu\")"
   ],
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "sys.version_info(major=3, minor=12, micro=3, releaselevel='final', serial=0)\n",
      "matplotlib 3.9.1\n",
      "numpy 2.0.0\n",
      "pandas 2.2.2\n",
      "sklearn 1.6.1\n",
      "torch 2.6.0+cu126\n"
     ]
    }
   ],
   "execution_count": 1
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 数据准备1，观察灰度图片",
   "id": "9e17790567d246e3"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:51.140397Z",
     "start_time": "2025-03-05T11:22:50.146742Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torchvision import datasets  # torchversion:是一个用于计算机视觉的开源库\n",
    "from torchvision import transforms  # 包含了一些对于图像预处理的操作\n",
    "\n",
    "# 定义数据集的变化，将图片变成tensor，但是如果里面什么都没做，就不会变tensor\n",
    "transform = transforms.Compose([])  # \n",
    "# 定义数据集\n",
    "train_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",  # 数据集的路径\n",
    "    train=True,  # 确定是训练集还是测试集\n",
    "    download=True,  # True:如果没有下载过，就下载；False:如果已经下载过，就不再下载\n",
    "    transform=None  # 如果不做任何处理，就用None\n",
    ")\n",
    "# 定义训练集\n",
    "test_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",\n",
    "    train=False,\n",
    "    download=True,\n",
    "    transform=None\n",
    ")"
   ],
   "id": "ca6c3a7a93116fcb",
   "outputs": [],
   "execution_count": 2
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:51.151609Z",
     "start_time": "2025-03-05T11:22:51.140397Z"
    }
   },
   "cell_type": "code",
   "source": [
    "print(type(train_ds))\n",
    "print(len(train_ds), len(test_ds))  # 60000 10000分别是训练集和测试集的样本数\n",
    "print(type(train_ds[0]))  # 第一张图片的元组，包含图片和标签\n",
    "print(train_ds[0])  # 第一张图片的元组，包含图片和标签\n",
    "\n",
    "img, label = train_ds[1]  # 第一张图片的tensor和标签\n",
    "\n",
    "print(img, label)\n",
    "img"
   ],
   "id": "6acaf378ea9726d7",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'torchvision.datasets.mnist.FashionMNIST'>\n",
      "60000 10000\n",
      "<class 'tuple'>\n",
      "(<PIL.Image.Image image mode=L size=28x28 at 0x14ACC081C40>, 9)\n",
      "<PIL.Image.Image image mode=L size=28x28 at 0x14AD2FF4770> 0\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<PIL.Image.Image image mode=L size=28x28>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAABwAAAAcCAAAAABXZoBIAAACHklEQVR4AV1TPWsUURS99743486u7G40sGRTRPADAklENyApRLCysRAEC+2sLLRa8BcIgoWFldiorYXptLCUIClMIRhNSOMum8INrtmNOzPvy/tmZiPxMrx53PPOmXPPYxB8oeNl/tmbjVQt3Nh5MvC9opDfFx5vf+v2Hdf3Tbv7cjGDPABQfb1Eo7GysnZgWaQUhR/vcDsHP8ztWakRSBGQ77qZa5sA0hNbc30pomaZlDQY6GFXg7nbLpjtB30rzPNet7lLKjx+8X5fVuUpyETgphaupF+o1rtLUWN6/6mRpT/Nc4Xs+Y44BlV4fzDffntdfm7pirE/Vrayby7+1CSiPVhIZh6hwhXozVobX36VgQ+jkYlivXzyRNBQcVi/NTWuYbicy641zlQr2+aTtUZINDTcqgjqrU7mnDp770qnNggEz4UU177c5k1hCH6tJ1ddWBEWEG0pLa1lWD4KhuCGgoPL8xIwAOG3PixwCnZ+ywQcdxCSAPaB/D1lIK/j1GmBDpEoZVOeMgEdWOMcIT9IzpIFTyyYvJlFwbyspdC75spl+ZyBkK0ioA20C/5jxkKTdWxZSgP1jPhP1maBELJlp6OcmV12oc/iHiSnyzkzB703NsFzCl7IHDHELlM2Yzl1f4TBo6P4TIhV/Ue9iq/DUXqgk0SlSZIqcAXz0FC9IqeJQgAtOuXTwCFNrox/h42vgwBo5FBbVV8Hj8FfCjnVFzSWz9QAAAAASUVORK5CYII=",
      "image/jpeg": "/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAAgGBgcGBQgHBwcJCQgKDBQNDAsLDBkSEw8UHRofHh0aHBwgJC4nICIsIxwcKDcpLDAxNDQ0Hyc5PTgyPC4zNDL/wAALCAAcABwBAREA/8QAHwAAAQUBAQEBAQEAAAAAAAAAAAECAwQFBgcICQoL/8QAtRAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0KxwRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZWmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6/9oACAEBAAA/AOB+E3gyz8V6xez6lE01jYRqWiDFQ8jk7QSOcYVjxjoK9hlufDultLpcPhSa5itZdjra6NFNCshiEh5Yj5tmCTTjpvhnxg9zYX/huSCe3SMyLeWC20yI+7aUZTnb8jcA446V81a7pcmh69qGlytue0uHh3f3gpIB/Ec/jXSeBfiJf+CvMt7ezsp7a4lV5vORg/HHDKR2z1z1NfQF94U8Oapez3l7o9vczzkGSSR5MvjAGcMB0C9B2rC8Uz2Xw28LXGp+HdIsoJ5JIoCr+YyNyx5y2eMtjBHJr5517WrrxFrdzq16sS3FwwLiJdqjAAGB9AKzq+zkXjAAGcnivP8A4zLu8ATf7N1C/wCrD+tfONFfUf8AwlV5AmBbWrbQACwf0Ho1cV8S/Edzqfg66t5be2RTLFzGHzw2e7GvEa//2Q=="
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "execution_count": 3
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:51.224962Z",
     "start_time": "2025-03-05T11:22:51.151609Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 显示图片\n",
    "def show_img(img):\n",
    "    print(f\"图像的大小为：{img.size}\")\n",
    "    print(f\"图像的模式为：{img.mode}\")  # l 表示灰度图，RGB表示彩色图\n",
    "    if img.mode == \"L\":  # 灰度图\n",
    "        pixel_values = list(img.getdata())  # 像素值列表\n",
    "        print(pixel_values)\n",
    "\n",
    "\n",
    "def show_single_img(img_arr):  # 显示单张图片\n",
    "    plt.imshow(img_arr, cmap='binary')  # cmap='gray'表示显示灰度图\n",
    "    plt.colorbar()  # 显示颜色条\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "show_img(img)  # 前面一定不能transform.ToTensor()，否则会报错\n",
    "print('-' * 50)\n",
    "show_single_img(img)  # img:<PIL.Image.Image image mode=L size=28x28 at 0x23DDB33D190>"
   ],
   "id": "35d464ebbf180f4d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "图像的大小为：(28, 28)\n",
      "图像的模式为：L\n",
      "[0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 41, 188, 103, 54, 48, 43, 87, 168, 133, 16, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 49, 136, 219, 216, 228, 236, 255, 255, 255, 255, 217, 215, 254, 231, 160, 45, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 14, 176, 222, 224, 212, 203, 198, 196, 200, 215, 204, 202, 201, 201, 201, 209, 218, 224, 164, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 219, 200, 198, 202, 198, 199, 199, 201, 196, 198, 198, 200, 200, 200, 200, 201, 200, 225, 41, 0, 0, 0, 0, 0, 0, 0, 51, 219, 199, 203, 203, 212, 238, 248, 250, 245, 249, 246, 247, 252, 248, 235, 207, 203, 203, 222, 140, 0, 0, 0, 0, 0, 0, 0, 116, 226, 206, 204, 207, 204, 101, 75, 47, 73, 48, 50, 45, 51, 63, 113, 222, 202, 206, 220, 224, 0, 0, 0, 0, 0, 0, 0, 200, 222, 209, 203, 215, 200, 0, 70, 98, 0, 103, 59, 68, 71, 49, 0, 219, 206, 214, 210, 250, 38, 0, 0, 0, 0, 0, 0, 247, 218, 212, 210, 215, 214, 0, 254, 243, 139, 255, 174, 251, 255, 205, 0, 215, 217, 214, 208, 220, 95, 0, 0, 0, 0, 0, 45, 226, 214, 214, 215, 224, 205, 0, 42, 35, 60, 16, 17, 12, 13, 70, 0, 189, 216, 212, 206, 212, 156, 0, 0, 0, 0, 0, 164, 235, 214, 211, 220, 216, 201, 52, 71, 89, 94, 83, 78, 70, 76, 92, 87, 206, 207, 222, 213, 219, 208, 0, 0, 0, 0, 0, 106, 187, 223, 237, 248, 211, 198, 252, 250, 248, 245, 248, 252, 253, 250, 252, 239, 201, 212, 225, 215, 193, 113, 0, 0, 0, 0, 0, 0, 0, 17, 54, 159, 222, 193, 208, 192, 197, 200, 200, 200, 200, 201, 203, 195, 210, 165, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 47, 225, 192, 214, 203, 206, 204, 204, 205, 206, 204, 212, 197, 218, 107, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 6, 0, 46, 212, 195, 212, 202, 206, 205, 204, 205, 206, 204, 212, 200, 218, 91, 0, 3, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 11, 197, 199, 205, 202, 205, 206, 204, 205, 207, 204, 205, 205, 218, 77, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 2, 191, 198, 201, 205, 206, 205, 205, 206, 209, 206, 199, 209, 219, 74, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 188, 197, 200, 207, 207, 204, 207, 207, 210, 208, 198, 207, 221, 72, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 215, 198, 203, 206, 208, 205, 207, 207, 210, 208, 200, 202, 222, 75, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 212, 198, 209, 206, 209, 206, 208, 207, 211, 206, 205, 198, 221, 80, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 204, 201, 205, 208, 207, 205, 211, 205, 210, 210, 209, 195, 221, 96, 0, 3, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 202, 201, 205, 209, 207, 205, 213, 206, 210, 209, 210, 194, 217, 105, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 204, 204, 205, 208, 207, 205, 215, 207, 210, 208, 211, 193, 213, 115, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 204, 207, 207, 208, 206, 206, 215, 210, 210, 207, 212, 195, 210, 118, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 198, 208, 208, 208, 204, 207, 212, 212, 210, 207, 211, 196, 207, 121, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 198, 210, 207, 208, 206, 209, 213, 212, 211, 207, 210, 197, 207, 124, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 172, 210, 203, 201, 199, 204, 207, 205, 204, 201, 205, 197, 206, 127, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 188, 221, 214, 234, 236, 238, 244, 244, 244, 240, 243, 214, 224, 162, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 139, 146, 130, 135, 135, 137, 125, 124, 125, 121, 119, 114, 130, 76, 0, 0, 0, 0, 0, 0]\n",
      "--------------------------------------------------\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 640x480 with 2 Axes>"
      ],
      "image/png": "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X19fnyoqKpSZmRnSsQy7DhwAgOGssLBQq1ev1u2336558+bppZdeUkdHhx5++OGQjsOoAHe5XNq6dasRr00MJY7DRRyHizgOF3EcLuI4DL0HHnhAf/jDH7RlyxZ5vV7deuutKi8vv+yNbUNthC8U7/MHAABBxWvgAAAYiAAHAMBABDgAAAYiwAEAMJAxAT4clm4Lt23btl22is60adPCPawhd/DgQS1btkypqakaMWKE9uzZE/C4z+fTli1blJKSotjYWGVlZen48ePhGewQutZxWLNmzWXnR05OTngGO0SKi4t1xx13KC4uTklJSVq+fLlqa2sDtuns7FR+fr7Gjh2rMWPGKC8v77KLbphuIMdh0aJFl50PjzzySJhGjKFgRIAPl6XbhoNbbrlFJ0+e9N8+/fTTcA9pyHV0dGjOnDkqKSnp9/Ht27fr5Zdf1s6dO3Xo0CGNHj1a2dnZ6uzsDPFIh9a1joMk5eTkBJwfb731VghHOPQqKyuVn5+v6upq7du3Tz09PVqyZIk6Ojr822zatEkffPCB3nvvPVVWVqqpqUn3339/GEcdfAM5DpK0bt26gPNh+/btYRoxhoTPAPPmzfPl5+f7v+7t7fWlpqb6iouLwziq0Nu6datvzpw54R5GWEny7d692/91X1+fz+Px+H7yk5/472tpafG5XC7fW2+9FYYRhsZ3j4PP5/OtXr3ad99994VlPOFy6tQpnyRfZWWlz+e7+LOPioryvffee/5tjh075pPkq6qqCtcwh9x3j4PP5/P91V/9le/HP/5x+AaFITfsO/BLS7dlZWX57wvX0m3DwfHjx5WamqrJkydr1apVamhoCPeQwqq+vl5erzfg/HC73crIyHDk+XHgwAElJSXp5ptv1oYNG3T69OlwD2lItba2SpISExMlSTU1Nerp6Qk4H6ZNm6aJEyde1+fDd4/DJW+++abGjRunmTNnqqioyPayqhiehv2V2IbT0m3hlpGRodLSUt188806efKknn76ad111106evSo4uLiwj28sPB6vZLU7/lx6TGnyMnJ0f3336/09HTV1dXpH/7hH5Sbm6uqqipFRkaGe3hB19fXp40bN+rOO+/UzJkzJV08H6Kjo5WQkBCw7fV8PvR3HCTpoYce0qRJk5SamqojR47oySefVG1trX75y1+GcbQIpmEf4Piz3Nxc/79nz56tjIwMTZo0Se+++67Wrl0bxpFhOFi5cqX/37NmzdLs2bM1ZcoUHThwQIsXLw7jyIZGfn6+jh496oj3gVzNlY7D+vXr/f+eNWuWUlJStHjxYtXV1WnKlCmhHiaGwLCfQh9OS7cNNwkJCZo6dapOnDgR7qGEzaVzgPPjcpMnT9a4ceOuy/OjoKBAe/fu1SeffBKw/LDH41F3d7daWloCtr9ez4crHYf+ZGRkSNJ1eT441bAP8OG0dNtw097errq6OqWkpIR7KGGTnp4uj8cTcH60tbXp0KFDjj8/vvnmG50+ffq6Oj98Pp8KCgq0e/du7d+/X+np6QGPz507V1FRUQHnQ21trRoaGq6r8+Fax6E/hw8flqTr6nxwOiOm0IfL0m3h9thjj2nZsmWaNGmSmpqatHXrVkVGRurBBx8M99CGVHt7e0DXUF9fr8OHDysxMVETJ07Uxo0b9dxzz+mmm25Senq6nnrqKaWmpmr58uXhG/QQuNpxSExM1NNPP628vDx5PB7V1dXpiSee0I033qjs7Owwjjq48vPzVVZWpvfff19xcXH+17XdbrdiY2Pldru1du1aFRYWKjExUfHx8Xr00UeVmZmp+fPnh3n0wXOt41BXV6eysjItXbpUY8eO1ZEjR7Rp0yYtXLhQs2fPDvPoETThfhv8QL3yyiu+iRMn+qKjo33z5s3zVVdXh3tIIffAAw/4UlJSfNHR0b6/+Iu/8D3wwAO+EydOhHtYQ+6TTz7xSbrstnr1ap/Pd/GjZE899ZQvOTnZ53K5fIsXL/bV1taGd9BD4GrH4dy5c74lS5b4xo8f74uKivJNmjTJt27dOp/X6w33sIOqv+9fkm/Xrl3+bc6fP+/7u7/7O98NN9zgGzVqlG/FihW+kydPhm/QQ+Bax6GhocG3cOFCX2Jios/lcvluvPFG3+OPP+5rbW0N78ARVCwnCgCAgYb9a+AAAOByBDgAAAYiwAEAMBABDgCAgQhwAAAMRIADAGAgAhwAAAMR4AAAGIgABwDAQAQ4AAAGIsABADAQAQ4AgIH+Hw5iCt0jXgXRAAAAAElFTkSuQmCC"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 4
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 数据准备2，将图片变成tensor，为训练做准备，模型只能吃tensor",
   "id": "6d65ea56cb04676a"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:51.252035Z",
     "start_time": "2025-03-05T11:22:51.225966Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from torchvision import datasets  # torchversion:是一个用于计算机视觉的开源库\n",
    "from torchvision import transforms  # 包含了一些对于图像预处理的操作\n",
    "from torchvision.transforms import ToTensor  # 转换为tensor\n",
    "\n",
    "# 定义数据集的变化：\n",
    "transform = transforms.Compose([\n",
    "    transforms.ToTensor(),  # 如果需要将图片转转化为tensor，就用ToTensor()\n",
    "    transforms.Normalize(mean=0.2860, std=0.3205)  # mean和std是归一化的均值和方差,Normalize()是标准化的一种方法\n",
    "])\n",
    "\n",
    "train_ds = datasets.FashionMNIST(\n",
    "    root=\"data\",  # 数据集的路径\n",
    "    train=True,  # 确定是训练集还是测试集\n",
    "    download=True,  # True:如果没有下载过，就下载；False:如果已经下载过，就不再下载\n",
    "    transform=transform  # 将图片转化为tensor\n",
    ")\n",
    "\n",
    "test_ds = datasets.FashionMNIST(\n",
    "    root='data',\n",
    "    train=False,\n",
    "    download=True,\n",
    "    transform=transform\n",
    ")"
   ],
   "id": "4ed596deb022eff9",
   "outputs": [],
   "execution_count": 5
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.115142Z",
     "start_time": "2025-03-05T11:22:51.252035Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 计算没有归一化前只进行toTensor()的均值和方差\n",
    "def cal_mean_std(tensor_list):\n",
    "    mean = 0.\n",
    "    std = 0.\n",
    "    for img, _ in tensor_list:\n",
    "        mean += img.mean(dim=(1, 2))\n",
    "        std += img.std(dim=(1, 2))\n",
    "    mean = mean / len(tensor_list)\n",
    "    std = std / len(tensor_list)\n",
    "    return mean, std\n",
    "\n",
    "# 如何判断均值和方差是否正确：带入上面进行标准化，再计算均值和方差，均值为0方差为1，标准化后的\n",
    "print(cal_mean_std(train_ds))   "
   ],
   "id": "3f0f0258092418d9",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "(tensor([0.0001]), tensor([0.9999]))\n"
     ]
    }
   ],
   "execution_count": 6
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.118362Z",
     "start_time": "2025-03-05T11:22:57.115142Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 这个时候图片已经被转化为tensor了\n",
    "img_tensor, label = train_ds[1]\n",
    "# 打印tensor的类型，shaoe，以及标签\n",
    "print(type(img_tensor), img_tensor.shape, label)  # tensor的shape是[1,28,28]是一个单通道的图片"
   ],
   "id": "56cec4155867e27d",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'torch.Tensor'> torch.Size([1, 28, 28]) 0\n"
     ]
    }
   ],
   "execution_count": 7
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.496864Z",
     "start_time": "2025-03-05T11:22:57.118362Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 显示训练集中的图片\n",
    "def show_train_img(n_rows, n_cols, train_ds, class_names):\n",
    "    assert n_rows * n_cols < len(train_ds)  #确保打印的图片小于总样本数\n",
    "    plt.figure(figsize=(n_cols * 1.4, n_rows * 1.6))  #宽1.4高1.6，宽，高\n",
    "    for row in range(n_rows):\n",
    "        for col in range(n_cols):\n",
    "            index = n_cols * row + col  # 计算索引，从0开始\n",
    "            plt.subplot(n_rows, n_cols, index + 1)  #因为从1开始\n",
    "            img_arr, label = train_ds[index]\n",
    "            img_arr = np.transpose(img_arr, (1, 2, 0))  # 通道换到最后一维,shape=(28,28,1)\n",
    "            plt.imshow(img_arr, cmap=\"binary\",\n",
    "                       interpolation='nearest')  #interpolation='nearest'是临近插值\n",
    "            plt.axis('off')  #去除坐标系\n",
    "            plt.title(class_names[label])  # 显示类别名称\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "# 已经知道图片的类型\n",
    "class_names = ['T-shirt', 'Trouser', 'Pullover', 'Dress',\n",
    "               'Coat', 'Sandal', 'Shirt', 'Sneaker',\n",
    "               'Bag', 'Ankle boot']  #0-9分别代表的类别\n",
    "show_train_img(3, 10, train_ds, class_names)"
   ],
   "id": "d682893f7f1e95ca",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<Figure size 1400x480 with 30 Axes>"
      ],
      "image/png": "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11+P8uXL41//+hdOnz6dZl0VGxuLUaNG4Z577sH111+Prl27Ii4uDj/99BPmzJmD+vXrp/ljTrjz8MMP49SpU2jfvj0qVaqEM2fOYMWKFcZb4EKDrf7nP//BkiVLULduXfTu3RuVK1fGoUOHsGbNGixatAiHDh0CALRp0wbJyclo3749WrdujZ07d2L06NGoXLmyK+ioze23327kjLGxsXjnnXeQmJiIF154AU8++SR27dqF22+/Hfnz58fOnTsxffp0PPDAA/jHP/5xUfUUzmjMhQehjMW9e/ca79Q+ffrgxIkTePfddxEfH39B3mLME088gfHjx+PWW29F//79TTrcVKVAKjfddBMKFSqE7t2745FHHkFERATGjx+fLllJdkLtlkFcSMqetm3bOtHR0c7Jkyc9y/To0cPJkyePc+DAAVc6NxtYqcc4jXEqBw4ccCpXruwUK1bM2bp1q+M4adMYO875dMJDhgxxqlSp4kRFRTmFChVyatWq5QwePNg5evSo729q3LixU6VKFefbb791brzxRic6OtpJSEhw3nrrrTRl9+7d69x3331OkSJFnMjISKdatWrO2LFj05Q7fvy48/e//90pXry4kydPHqdChQrOq6++6qSkpLjKbdq0yWnUqJGTN29eB0BYpjS+kNSca9ascbp16+aULl3aiYqKcuLj4502bdo43377rSlzIX3GKzVn3759A55/xYoVTq1atZzIyMgck6bTD7VdeJKapjH1X2RkpFOsWDHn5ptvdoYPH25SqqcSaG5lxowZ49SqVcvJmzevkz9/fqdatWrOE0884fz222+O44TW9h9//LFzyy23OPHx8U5kZKRTunRpp0+fPs7vv/+eOZUQhmi8ZT1CSQnuOI4zYcIEp1y5ck5kZKRTo0YNZ8GCBelKqZrKW2+95VSqVMnJkyePU7RoUefBBx90Dh8+HPDc//rXvxwATvny5T2vb8mSJU5SUpJToEABJzo62klMTHR69Ojh6i/B5oFwYd68eU7Pnj2dSpUqOTExMU5kZKRTvnx55+GHH3b27t1rynn174SEhDRrrb179zp9+/Z1SpUq5eTJk8cpVqyY07x5c2fMmDGmTEpKivPSSy85CQkJTlRUlFOzZk1n9uzZafqB17gcOXKkA8D5xz/+Yb775JNPnAYNGjj58uVz8uXL51SqVMnp27evs3nz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XsGJEyfw/vvvu16epFK+fHn0798fAHD27Fk8//zzZmyVKVMGTz31VJr7XCjrxSZNmmDOnDnYvXu3abusGD/vsnmgXAz79u3DLbfcgri4OAwcOBAFCxbErl27XAvBVCZNmoTjx4+jT58+iIiIwCuvvII77rgDO3bsQJ48eXzPs3jxYkydOhX9+vVDkSJFcN1112HUqFF48MEH0b59e9xxxx0AgOrVq2fK78wsJk6ciDvuuAORkZHo1q0bRo0ahVWrVqFOnTppyqan/latWoWkpCTUrl0bM2bM8HwTnJKSgnbt2mHZsmV44IEHcO211+KHH37AG2+8gS1btoSkXTx8+DBatWqFzp07o1u3bpg6dSoefPBBREZGmhvoH3/8gSZNmmDbtm3o168fypYti2nTpqFHjx44cuSImQAcx0G7du2wZMkS3H///ahRowYWLFiAxx9/HL/++iveeOMNAOfdTXv16oUbbrgBDzzwAAAgMTEx6LVeThISEvDVV19h/fr1vkEJR40ahSpVqqBdu3bInTs3Zs2ahYceeggpKSno27evq+y2bdvQsWNH3H///ejevTs++OAD9OjRA7Vq1UKVKlUAnF9QNm3aFGfPnsXAgQORL18+jBkzJmCf+PDDDxETE4NHH30UMTExWLx4MZ5++mkcO3YMr776asZWSJigdsv6hNpGALBs2TIkJyfjoYceQv78+fHmm2+iQ4cO+Omnn1C4cGEAwN69e1GvXj2zaI+Li8O8efNw//3349ixY8al9dixY3jvvffQrVs39O7dG8ePH8f777+PpKQkfPPNN6hRo0bAazh37hx69uyJKVOmYPr06WjdujWA838tHDRoEDp37oxevXph//79GDFiBBo1aoTvvvvOtQg+ePAgWrZsia5du+Luu+9G0aJFL7oeMxLd43LePc6PQP011Dq7EDp06IANGzbg4YcfRpkyZbBv3z4sXLgQP/30k3kAGD9+PLp3746kpCQMGTIEp06dwqhRo9CgQQN89913rgeFs2fPIikpCQ0aNMBrr70Wll4zmY2eB7IuGX1v9GLz5s3o1q0b+vTpg969e+Oaa67JdnPY5WDWrFkoV64cbrrppqBle/XqhXHjxqFjx4547LHH8PXXX+Pll1/Gxo0bMX36dFMulPXiv/71Lxw9ehS//PKLuSeFEsT9kuNkEfr27euEejnTp093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R6No0aLo06cPDh8+7Drut99+i6SkJBQpUgR58+ZF2bJl0bNnT1eZyZMno1atWsifPz9iY2NRrVo1DB8+/NL88DChSZMmqFq1KlavXo1GjRrhyiuvxFNPPQUA2Ldvn3lwi46OxnXXXYdx48a59l+6dGlAt9pUvfGHH35ovtuzZw/uu+8+lCxZElFRUbj66qtx2223pdG7zps3Dw0bNkS+fPmQP39+tG7dGhs2bHCV8etDOZFXXnkFJ06cwPvvv++aKFMpX748+vfvDwA4e/Ysnn/+eSQmJiIqKgplypTBU089hdOnT7v2mTFjBlq3bo3ixYsjKioKiYmJeP7553Hu3DlTpkmTJpgzZw52795t3HrLlCmTqb81J1KwYEHkzZvXtah/7bXXcNNNN6Fw4cLImzcvatWqhY8//jjNvn/88QceeeQRFClSBPnz50e7du3w66+/ptGfiwtDYy780fok+xBKnacyZswYMxbr1KmDVatWubYHioESERGBfv36YeLEiahSpQqioqIwevRoxMXFAQAGDx5sxmNOm1ebNWsG4PxDW5MmTQJ64vTo0SPd89TIkSNNnRcvXhx9+/bFkSNHzPZ+/fohJiYGp06dSrNvt27dUKxYMdccqjVmaOgeF76o7fzJch4oXtxzzz146qmn8Nlnn6F3794AzjdYUlISGjRogNdee814PPTp0wcffvgh7rvvPjzyyCPYuXMn3nrrLXz33XdYvnw58uTJg3379uGWW25BXFwcBg4ciIIFC2LXrl1ITk4251y4cCG6deuG5s2bY8iQIQCAjRs3Yvny5abTiPMcPHgQLVu2RNeuXXH33XejaNGi+OOPP9CkSRNs27YN/fr1Q9myZTFt2jT06NEDR44cSVcddujQARs2bMDDDz+MMmXKYN++fVi4cCF++uknM8DGjx+P7t27IykpCUOGDMGpU6cwatQoNGjQAN99951rIHr1oZzIrFmzUK5cOdx0001By/bq1Qvjxo1Dx44d8dhjj+Hrr7/Gyy+/jI0bN2L69Omm3IcffoiYmBg8+uijiImJweLFi/H000/j2LFjePXVVwEA//rXv3D06FH88ssveOONNwAAMTExmfMjcxBHjx7FgQMH4DgO9u3bhxEjRuDEiROuv8YOHz4c7dq1w1133YUzZ85g8uTJ6NSpE2bPno3WrVubcj169MDUqVNxzz33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Qc9/MWul7MQNN9zgymjFREREBKzLQGvCjKRevXooU6YMpk6dijvvvBOzZs3CH3/8gS5dupgyWmOGju5x4YvaLjhh8wJl/PjxABD0DXViYiIWLVqE+vXrh3SjqlevHurVq4cXX3wRkyZNwl133YXJkyejV69eAM6/pW7bti3atm2LlJQUPPTQQ3jnnXcwaNAg/QU2CAkJCVi3bh1SUlJcN5BUN62EhAQA//vrDUdEB7w9VBITE/HYY4/hsccew9atW1GjRg28/vrrmDBhAhITEwEA8fHxaNGiRUb/pGxNmzZtMGbMGHz11Ve48cYbPcslJCQgJSUFW7duNd5EALB3714cOXLEtOvSpUtx8OBBJCcno1GjRqbczp070xwz2MQrMoazZ88COP+XtU8++QTR0dFYsGABoqKiTJmxY8e69klt7507d6JChQrm+23btl2ai87GaMxlD7Q+CR/uvfdeI8cA0r7QCFbnmYHGoptChQoFlENdqNcy8L915ubNm1GuXDnz/ZkzZ7Bz584068TOnTtj+PDhOHbsGKZMmYIyZcqgXr16ZrvWmBeG7nHhi9rOn7B4Lbp48WI8//zzKFu2bNAUYJ07d8a5c+fw/PPPp9l29uxZ85B++PDhNG+4a9SoAQDGZfPgwYOu7VdccYWJjB7IrVO4adWqFfbs2YMpU6aY786ePYsRI0YgJiYGjRs3BnB+8OXKlQtffPGFa/+RI0e6Pp86dQp//vmn67vExETkz5/ftEdSUhJiY2Px0ksvBdQxp7rrirQ88cQTyJcvH3r16oW9e/em2b59+3YMHz4crVq1AgAMGzbMtX3o0KEAYLKzpP6VjsfZmTNn0rQrAOTLly/s3PfCjb/++gufffYZIiMjce211yJXrlyIiIhw/VVv165d+PTTT137pT4U2u02YsSITL/m7I7GXPij9Ul4Ua5cOSNtbNGiBerXrw8gtDrPLFIzs9h/RMqpJCYmYtOmTa712vfff4/ly5df8LFatGiByMhIvPnmm672ff/993H06NE02eS6dOmC06dPY9y4cZg/fz46d+7s2q415oWhe1z4orbzJ8t5oMybNw+bNm3C2bNnsXfvXixevBgLFy5EQkICZs6ciejoaN/9GzdujD59+uDll1/G2rVrccsttyBPnjzYunUrpk2bhuHDh6Njx44YN24cRo4cifbt2yMxMRHHjx/Hu+++i9jYWNMZevXqhUOHDqFZs2YoWbIkdu/ejREjRqBGjRqut2wiMA888ADeeecd9OjRA6tXr0aZMmXw8ccfY/ny5Rg2bJjRixcoUACdOnXCiBEjEBERgcTERMyePTuNlnTLli1o3rw5OnfujMqVKyN37tyYPn069u7di65duwI473Y2atQo3HPPPbj++uvRtWtXxMXF4aeffsKcOXNQv359vPXWW5e8LsKBxMRETJo0CV26dMG1116Le++9F1WrVsWZM2ewYsUKk4K6f//+6N69O8aMGWNc8r755huMGzcOt99+O5o2bQoAuOmmm1CoUCF0794djzzyCCIiIjB+/PiArrm1atXClClT8Oijj6JOnTqIiYlB27ZtL3UVZCtS51LgfIrOSZMmYevWrRg4cCBiY2PRunVrDB06FLfeeivuvPNO7Nu3D2+//TbKly+PdevWmePUqlULHTp0wLBhw3Dw4EGTxnjLli0AwuMvBVkVjbnwQuuT7EsodZ5Z5M2bF5UrV8aUKVNQsWJFXHXVVahatSqqVq2aqefNqvTs2RNDhw5FUlIS7r//fuzbtw+jR49GlSpVTHDLUImLi8OTTz6JwYMH49Zbb0W7du2wefNmjBw5EnXq1DHxF1K5/vrrUb58efzrX//C6dOnXfIdQGvMC0X3uPBFbReEy5H6JxB26s3IyEinWLFizs033+wMHz7cpLxNpXv37k6+fPk8jzdmzBinVq1aTt68eZ38+fM71apVc5544gnnt99+cxzHcdasWeN069bNKV26tBMVFeXEx8c7bdq0cb799ltzjI8//ti55ZZbnPj4eCcyMtIpXbq006dPH+f333/PnEoIA7zSGFepUiVg+b179zr33XefU6RIEScyMtKpVq2aSUvM7N+/3+nQoYNz5ZVXOoUKFXL69Onz/9o702A7qyoNLwemFgjzGBJCBkIIGUgEwmAIBAQV6Eh3CZQgYAtlxbFbrcbgQInMTeOElN0UVQwpFJAotBE0hMg8xAyEhIQxQAAxAiq2djuc/tGVzbNf7t7nkOHec+55n1/r3m9/39lnz9+p9a7VWLJkSZbGePXq1Y3p06c3Ro4c2XjXu97VGDBgQGP//fdv/OAHP3jT8+bOndt473vf2xgwYEBj0003bQwdOrRx6qmnZv3bbAx1KytWrGh87GMfa+y+++6NjTfeuLHFFls0DjrooMa3vvWtlGbsz3/+c+Occ85pDBkypLHRRhs1dtttt8ZZZ52VpSFrNBqNe+65p3HAAQc0Nttss8Yuu+zS+MIXvtC47bbb3pS2+vXXX2+cdNJJja222qoREW2fvqyd6SmN8aabbtoYN25c47vf/W7jb3/7Wyp75ZVXNoYPH97YZJNNGiNHjmxcddVVPabf/MMf/tCYPn16Y5tttmlsvvnmjb//+79vLF++vBERjQsuuKC3v2K/w3OuvfH5pDN5K2mMW2nzNWmML7744jfdH5JOt5TGePr06T1+/r333tuYMGFCY+ONN+7XKY1bSQneaDQa1157bWOPPfZobLzxxo1x48Y1brvttrVKY7yGb3/7242RI0c2Ntpoo8aOO+7Y+PjHP9549dVXe/zsGTNmNCKiMWzYsGL9fMZ8a3iP61zcdz3ztkajhahXxhhjDFi4cGGMHz8+rr322qbSBWOMMcYYY/oDHREDxRhjTN/xxz/+8U3/u+yyy+Ltb397FgzMGGOMMcaY/kzbxUAxxhjTXlx00UUxf/78mDJlSrzzne9MaVPPOOOM2G233fq6esYYY4wxxvQKlvAYY4yp8rOf/SzOOeecWLp0abz++usxaNCgOPnkk2PGjBnxznf6d3hjjDHGGNMd+AcUY4wxxhhjjDHGmCY4BooxxhhjjDHGGGNME/wDijHGGGOMMcYYY0wT/AOKMcYYY4wxxhhjTBN6Lfqfhlp529ve1tJ9c+fOTfZTTz2V7I9+9KPrp2I9cPnllyd7zJgx2bWDDz54g31uJ6NpTjfbbLM+qsn/85e//CX724Euc1oNfVSap6tWrcr+vvXWW5P96quvJvvPf/5zVm7KlCnJLs2l2lrBa62uIcZ0CjNnzkz2nDlzkr169eqsHOfV7373u2Rvt912WbmDDjoo2Z///OfXWz1NHfbJlltuuVbPmD9/frInTJiwznXqZu69997s73nz5iX7qquuSvYnPvGJZE+cODG7Z6uttkr266+/nuyVK1dm5a677rpkP/zww8mePn16sk844YTsniFDhlTr36ms7/369ttvT/YVV1yR7Oeffz7Z2pZ/+MMfeqzDX//616zc448/nuyRI0cm+wtf+EKyDznkkLWptmlD/va3vyX77W9/w5dgbd9Vu5m77747+3vzzTdPNt+9fv/732flxo8fn+xNN910A9Vuw2EPFGOMMcYYY4wxxpgm+AcUY4wxxhhjjDHGmCb0WhrjmlsUXf6PP/74rByvbbTRRsmeNGlSstUVj+5YdNN65ZVXivV76aWXkv3yyy/3+KyI3M3owQcfLD6v2/nf//3fZLNtd91112TXhh4lQX/605+K137zm98ke5tttkn24MGD32KNu4ta25dcFinT+d73vpddY9tvv/32yeb8i4h48cUXkz116tRkn3766U1q/P+sTb2N6QtKLsLK1ltvnezf/va3yR4wYECyd9ppp+weuqW/613vSvZrr72WlePzWB9dU4llcq1DWRTXR55J9HzCs8ujjz6a7CeeeCIr93d/93fJ5r752c9+Ntknn3zy2lS736BnuoULFyabMh2eEyLy9nzuueeS/d3vfned68R97Z/+6Z+SvXz58mTrPN1tt92SffjhhydbJeT9lWeeeSbZlFGp9Oq///u/k01JFde2X//612tVB8ofue7xeTznROT9QynY7rvvvlZ16ERK+4XuMT/96U+TTSnWY489lmz2aUQuXaUURMtxXBxwwAHJ/od/+Idkjx49uvgduEa/4x3vKJYzb7DXXnslm2toRMTOO++cbJ592E8R+fs0JXRE3yE4xvr6fGIPFGOMMcYYY4wxxpgm+AcUY4wxxhhjjDHGmCb4BxRjjDHGGGOMMcaYJvRaDJQap556arKpjYuIGD58eLKpTaO+jvrRiDxV0tFHH53s++67LyvHVLuPPPJIj5+jejjqtC688MIev4OJOO2005JN7SO1izr0Ntlkk2QzTWdNA8e+ZrkXXnhhLWrdnWj7UrN48803J/vqq69OtupbqXmkrnHbbbctfu7TTz+dbMYSGDt2bLF+tVgSxnQCGuuCKWpHjBiRbMZJYMyGiHweUL/N9LkR+ZrKOANcn88///xiXT33cr785S9nf5977rnJ5jmEe9v//M//ZPfwTMH2VT03U0FyvWWMNj0vTZ48uf4FOoi//OUvyWb8gx/+8IfJ/uhHP5rdw9gTnDMau4J9wDMJYwvpGYJ1IBpvjZ/F9LrsX6ZBjshjg/GeYcOGZeUuvfTSZDMGQbtS6sNFixZl5Y499tgey+n5gf228cYbJ5uxnhhTSq9xTDAmTUS+VnIuMw6HxnDgessz6w033JCVO/jgg5Pd6TGm+D0j8tiUjHeoKZ+5hu23337JZhwobY9SnBuNIcR3Ob4zcq/V+TJz5szoif6UxrjVscaYlZxXykUXXZTsb33rW8V7eCbh+NCxwzoxdmKr8UX5PF2fe6PffCIyxhhjjDHGGGOMaYJ/QDHGGGOMMcYYY4xpQp9JeOiOddBBBxXL0f2OLj50B6P7UUSe1nHHHXdM9ooVK7JyJZdMuvKpvIGfxXS66g7Y7bz73e9ONt04ibo201WSLq7qIrvlllsmm/1BNz5Nf2dyWnXto4s05Wt0OY6IOOKII5LNualyBbrQ0kWarsqaSpLugZ0gKegrF93S59bqQ1dLtqeWW5tnd7qrciu0+h0pV/viF7+YXbv77ruTzf7guqkuslz36FauclbucXwe97gTTjghu+df//Vfe/wONalft8B9LSLiySefTHZJnlqbF+wfbV+OhZJcYdSoUdk9c+fOrda/P0DptKYnfv/7359szhE9a5Tg2bE2vtmner6hDIiw3zn/IiJ22GGHZPMs+aMf/SgrR0n6KaecUqxfu8PzQkQu6dlll12Sre3EPuU5kOuryqO22GKLZFNqTEljRC41YB1effXVZNekCpyXug4/8MAD0cm0us9985vfTPbs2bOza+PHj082U7T/53/+Z/F5Q4YMSTalbXqu3HfffZN92GGHJZtzccGCBdk9N954Y7JVItsfWdv9+/TTT08225B7l6YO55yjrbJIzhPKv/je/rWvfS27Z8qUKS3VuzfOn913AjLGGGOMMcYYY4x5i/gHFGOMMcYYY4wxxpgm9JmEh1k35syZk2x1kaPrJaNr0x3plVdeKX4O3ZTU1ZIuSHQpo1seZToReRRwugXNmDEjK3f88ccX69QN0DWLUenpIjtgwIDsHspueD+lORF5lhdyzz33JFvd1czacfHFFyeb7uoa0ZzzjP2jfUUXXLrGLlmypMfPjMile6Wo/p0Cs33RZZhuxxMnTuzVOpkNA11ff/aznyV7u+22K97zq1/9qsf/63pGV/Snnnoq2XRrj8jldFx7OadUBjFmzJhkz5o1q1jXTpDTrW922mmn7O+SpKBV92Feq8nrKGXgZz777LPZPf113/vFL36RbGZs+chHPpKVo5s/MzRo1jjCsct+q41plqu1OfeokrRH60qZmI63hx56KNnMRtQJcG2jnCMid9nnvqgSHu7/bHeeER9++OHsnj333LPH+zlW9LOYJYbn0lo2NL4b6Jp6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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 8
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.508443Z",
     "start_time": "2025-03-05T11:22:57.496864Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 把转为tensor，归一化，数据放到dataloader中，可以进行批训练\n",
    "# DataLoader 是 PyTorch 中的一个类，用于将数据集（如图像、文本等）加载到模型中进行训练或测试。它的主要作用是将数据集分成小批量（batch），并支持数据预处理、数据增强和并行加载。\n",
    "train_loader = torch.utils.data.DataLoader(train_ds, batch_size=32, shuffle=True)  # 定义训练集的dataloader\n",
    "val_loader = torch.utils.data.DataLoader(test_ds, batch_size=32, shuffle=False)  # 定义验证集的dataloader\n",
    "\n",
    "# 查看loader的详细信息\n",
    "for _datas, _labels in train_loader:\n",
    "    print(_datas.shape, _labels.shape)\n",
    "    break\n",
    "for _datas, _labels in val_loader:\n",
    "    print(_datas.shape, _labels.shape)\n",
    "    break\n",
    "# 经过toTensor()和Normalize()，图片已经变成tensor，且已经归一化了，还没放到loader中，还需要进行批训练\n",
    "for _datas, _labels in train_ds:\n",
    "    # print(_datas, _labels)\n",
    "    print(type(_datas), type(_labels))\n",
    "    break"
   ],
   "id": "81063e0e6e98aad3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([32, 1, 28, 28]) torch.Size([32])\n",
      "torch.Size([32, 1, 28, 28]) torch.Size([32])\n",
      "<class 'torch.Tensor'> <class 'int'>\n"
     ]
    }
   ],
   "execution_count": 9
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "# 模型搭建，定义模型结构",
   "id": "f21245c9e827833f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.513462Z",
     "start_time": "2025-03-05T11:22:57.508443Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义一个神经网络模型，继承自 nn.Module\n",
    "class NeuralNetwork(nn.Module):\n",
    "    def __init__(self):\n",
    "        # 调用父类 nn.Module 的初始化方法\n",
    "        super().__init__()\n",
    "\n",
    "        # 定义一个展平层，用于将输入的多维数据展平为一维向量\n",
    "        # 例如，输入是 (batch_size, 28, 28) 的图像，展平后变为 (batch_size, 28*28)\n",
    "        self.flatten = nn.Flatten()\n",
    "\n",
    "        # 定义一个顺序容器，包含多个线性层和激活函数\n",
    "        self.linear_relu_stack = nn.Sequential(\n",
    "            # 第一个全连接层（线性层），输入特征数为 28*28=784，输出特征数为 300\n",
    "            nn.Linear(28 * 28, 300),  # 输入层到隐藏层\n",
    "            # ReLU 激活函数，引入非线性\n",
    "            nn.ReLU(),\n",
    "            # 第二个全连接层，输入特征数为 300，输出特征数为 100\n",
    "            nn.Linear(300, 100),  # 隐藏层到隐藏层\n",
    "            # ReLU 激活函数\n",
    "            nn.ReLU(),\n",
    "            # 第三个全连接层，输入特征数为 100，输出特征数为 10（假设是 10 分类任务）\n",
    "            nn.Linear(100, 10)  # 隐藏层到输出层\n",
    "        )\n",
    "\n",
    "    # 定义前向传播函数，输入 x 是模型的输入数据，输出是 logits（未归一化的预测值）\n",
    "    def forward(self, x):\n",
    "        # 将输入数据展平为一维向量\n",
    "        x = self.flatten(x)\n",
    "        # 将展平后的数据传入线性层和激活函数组成的堆栈，得到 logits\n",
    "        logits = self.linear_relu_stack(x)\n",
    "        # 返回 logits（未经过 softmax 的概率值）\n",
    "        return logits\n",
    "\n",
    "    # 实例化模型\n",
    "\n",
    "\n",
    "model = NeuralNetwork()\n",
    "# 打印模型结构\n",
    "print(model)"
   ],
   "id": "dda6d4eec3ffd731",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "NeuralNetwork(\n",
      "  (flatten): Flatten(start_dim=1, end_dim=-1)\n",
      "  (linear_relu_stack): Sequential(\n",
      "    (0): Linear(in_features=784, out_features=300, bias=True)\n",
      "    (1): ReLU()\n",
      "    (2): Linear(in_features=300, out_features=100, bias=True)\n",
      "    (3): ReLU()\n",
      "    (4): Linear(in_features=100, out_features=10, bias=True)\n",
      "  )\n",
      ")\n"
     ]
    }
   ],
   "execution_count": 10
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.525981Z",
     "start_time": "2025-03-05T11:22:57.513462Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 查看模型运算的tensor的大小\n",
    "x = torch.randn(32, 1, 28, 28)\n",
    "print(x.shape)\n",
    "# 继承的nn.Module类，可以直接调用forward方法，实际是重写了__call__方法，所以可以直接调用，前向传播，前向计算，模型验证等等\n",
    "logits = model(x)\n",
    "print(logits.shape)\n",
    "# 打印模型参数的数量\n",
    "print(784 * 300 + 300 + 300 * 100 + 100 + 100 * 10 + 10)\n",
    "# \n",
    "for name, param in model.named_parameters():  # 打印模型参数\n",
    "    print(name, param.shape)\n",
    "# 打印模型参数\n",
    "print(list(model.parameters()))  # 这里打印的参数是经过了totensor()和normalize()的，所以是tensor类型"
   ],
   "id": "70519bb078f22ea3",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "torch.Size([32, 1, 28, 28])\n",
      "torch.Size([32, 10])\n",
      "266610\n",
      "linear_relu_stack.0.weight torch.Size([300, 784])\n",
      "linear_relu_stack.0.bias torch.Size([300])\n",
      "linear_relu_stack.2.weight torch.Size([100, 300])\n",
      "linear_relu_stack.2.bias torch.Size([100])\n",
      "linear_relu_stack.4.weight torch.Size([10, 100])\n",
      "linear_relu_stack.4.bias torch.Size([10])\n",
      "[Parameter containing:\n",
      "tensor([[ 9.1095e-05,  4.9141e-03, -1.6146e-02,  ..., -2.5305e-02,\n",
      "         -7.8259e-03,  7.0493e-03],\n",
      "        [ 2.0964e-02,  8.5451e-03,  3.3554e-02,  ..., -3.0585e-03,\n",
      "          1.0448e-03, -6.3560e-03],\n",
      "        [-2.9045e-02, -1.4271e-03, -1.5024e-02,  ..., -1.7109e-02,\n",
      "          1.5323e-02,  1.0578e-02],\n",
      "        ...,\n",
      "        [ 1.3023e-02,  3.2927e-02,  3.5267e-02,  ..., -1.6818e-02,\n",
      "         -1.3654e-02,  1.9019e-02],\n",
      "        [-7.4558e-03,  3.3092e-02, -2.5797e-02,  ...,  1.7093e-02,\n",
      "         -3.1719e-02,  2.0733e-02],\n",
      "        [ 2.2483e-02, -2.7266e-02,  1.3752e-02,  ...,  3.4643e-02,\n",
      "         -1.8690e-02, -2.8343e-02]], requires_grad=True), Parameter containing:\n",
      "tensor([-2.2711e-03,  2.7429e-02,  3.1273e-03,  7.7158e-03,  1.6258e-02,\n",
      "         1.0602e-02, -2.2468e-02, -2.1599e-02,  3.0557e-02, -1.1610e-03,\n",
      "         2.4079e-02, -3.5294e-03, -2.2356e-02,  2.3589e-02,  1.3363e-02,\n",
      "        -1.2399e-02,  2.9816e-02, -1.7802e-02, -1.6266e-02, -2.5868e-03,\n",
      "         2.2516e-02, -2.5176e-02, -1.8051e-02, -2.5553e-02,  2.7304e-02,\n",
      "         3.4847e-02,  2.6274e-02, -2.7128e-02,  3.4409e-02, -3.1228e-03,\n",
      "        -1.7706e-02,  6.5939e-03,  1.3689e-02, -1.1191e-03, -3.1072e-02,\n",
      "        -2.2351e-02,  8.7028e-03, -3.3930e-02,  1.3911e-02,  9.6381e-03,\n",
      "        -1.7244e-02, -2.2791e-02, -1.8150e-03,  9.3873e-03,  2.9603e-02,\n",
      "        -2.9375e-02, -1.9739e-02, -2.0277e-02,  2.3715e-02, -1.2379e-02,\n",
      "        -1.1120e-02,  2.2620e-02, -2.2705e-02,  2.9523e-02, -3.5012e-02,\n",
      "         2.4276e-03,  5.7547e-03, -2.0192e-02, -1.1530e-02, -1.4367e-02,\n",
      "         2.6277e-02,  1.1674e-02, -1.7488e-02,  1.3598e-02,  1.2999e-02,\n",
      "        -1.4524e-02, -1.2355e-02,  2.0155e-02, -3.0514e-02, -3.1548e-02,\n",
      "         2.6060e-02, -2.8598e-02, -7.3962e-03,  2.0911e-02,  1.8962e-02,\n",
      "         2.9500e-02, -1.1034e-02, -2.7137e-02,  2.7481e-02, -3.4799e-02,\n",
      "         1.2540e-02,  1.1871e-02,  2.6326e-02, -1.7551e-02,  2.4800e-02,\n",
      "         9.8726e-03, -5.0331e-03, -5.1188e-03, -1.8255e-02,  3.1296e-02,\n",
      "         6.1254e-03,  7.7401e-03, -3.4244e-02,  1.4084e-02,  2.5851e-02,\n",
      "        -4.1022e-03, -1.0605e-02,  1.1597e-02, -1.4238e-02, -1.7518e-02,\n",
      "        -8.5031e-03,  2.6823e-02, -3.1539e-02, -1.0745e-02, -1.0259e-02,\n",
      "        -2.0458e-02, -6.3795e-03, -3.1158e-02,  2.3226e-02,  8.9490e-03,\n",
      "         3.0447e-02,  3.4300e-02,  2.1225e-02, -2.8076e-02, -1.6408e-02,\n",
      "         7.3834e-03, -2.9123e-02,  1.0897e-02, -8.9376e-04,  7.8266e-03,\n",
      "         9.4489e-03,  3.3344e-02, -2.4660e-02,  2.2033e-02, -1.4302e-03,\n",
      "         3.0711e-02, -8.4708e-03,  1.2143e-02, -4.1717e-03, -3.1289e-02,\n",
      "        -1.3948e-02, -5.4861e-03, -4.3135e-03, -2.9898e-02, -2.6557e-02,\n",
      "         3.4201e-02, -2.8827e-02, -6.8394e-03,  3.4819e-02,  1.9077e-02,\n",
      "        -2.5167e-02, -1.8344e-02,  1.0191e-02, -2.5705e-02,  3.2626e-03,\n",
      "        -1.6353e-02, -1.6447e-02, -2.1814e-02,  7.1570e-04,  6.0920e-03,\n",
      "        -3.9508e-03, -2.9023e-02, -2.2743e-02,  1.7117e-02, -3.4980e-02,\n",
      "         9.1077e-03, -2.0794e-02, -1.9073e-02,  2.5091e-02,  2.4134e-02,\n",
      "         4.1701e-03, -1.5909e-02,  1.6466e-02, -1.4824e-02, -2.7064e-03,\n",
      "         1.3848e-02,  2.1968e-02,  1.7035e-02, -2.2697e-02,  9.3669e-03,\n",
      "         2.4641e-02,  1.5756e-02, -2.3793e-02,  1.4556e-02,  2.5390e-02,\n",
      "        -9.4564e-03, -2.7621e-02,  9.7117e-04, -3.1029e-02,  3.4491e-04,\n",
      "         2.5665e-02, -1.2896e-03,  1.5307e-03, -3.9088e-03,  5.2771e-03,\n",
      "        -3.1671e-03, -3.0143e-02, -3.3821e-03,  9.7689e-03,  2.0130e-02,\n",
      "        -2.5959e-02,  2.9301e-02, -2.8098e-02, -1.6025e-02, -1.8126e-02,\n",
      "         2.3377e-02,  3.5207e-03,  1.5192e-02, -8.6088e-03, -2.1168e-04,\n",
      "        -1.4028e-02, -3.2917e-02, -2.0029e-02, -2.8107e-02, -1.9601e-02,\n",
      "        -8.7782e-03, -3.0822e-02,  3.4077e-02,  2.9066e-03, -1.7204e-02,\n",
      "         2.0527e-02,  2.0888e-02,  2.4001e-02,  2.8096e-02, -1.1969e-02,\n",
      "        -1.6347e-02, -2.3554e-02, -2.2893e-03, -1.8778e-02, -2.6773e-02,\n",
      "        -1.4064e-02,  2.9948e-05, -2.3818e-02,  1.1587e-02, -3.0982e-02,\n",
      "         1.4010e-02, -6.5342e-04, -1.0545e-02, -7.2959e-03, -9.1970e-03,\n",
      "         2.5147e-02, -2.7915e-02, -1.3959e-03,  1.6579e-02,  1.1524e-03,\n",
      "         1.1972e-02,  2.9910e-02, -2.9540e-02,  5.7987e-03, -1.2452e-02,\n",
      "         1.0434e-02, -3.5071e-02,  2.5009e-02, -1.7667e-02, -2.0734e-02,\n",
      "         7.7267e-03, -1.3021e-02,  1.2762e-02,  3.5585e-02, -7.8563e-03,\n",
      "        -1.6850e-02,  2.2177e-02, -3.3669e-02, -2.7207e-02,  3.2501e-02,\n",
      "        -1.6236e-02,  3.3459e-02,  2.1437e-02,  9.2750e-03, -1.4083e-02,\n",
      "        -1.4692e-02, -6.3977e-03, -1.9314e-02,  1.0038e-02, -1.8799e-02,\n",
      "        -2.1952e-02, -1.5530e-02, -2.1628e-02, -2.3309e-02,  2.0168e-02,\n",
      "         2.7843e-02,  1.2395e-02,  1.3999e-02,  1.4229e-02, -2.1777e-03,\n",
      "        -1.8534e-02, -3.2545e-02,  2.8556e-02, -1.1217e-02,  3.4381e-02,\n",
      "         1.3962e-02, -2.5441e-02,  2.1497e-02, -1.7724e-02, -1.5779e-03,\n",
      "        -2.6131e-02, -4.2475e-03, -2.3572e-02,  8.8229e-03, -3.4610e-02,\n",
      "         1.4557e-02, -3.5441e-02, -7.6663e-03, -3.4984e-02, -6.5299e-03,\n",
      "        -1.6462e-02,  1.5898e-02,  3.3414e-02,  1.0770e-02,  2.0982e-02],\n",
      "       requires_grad=True), Parameter containing:\n",
      "tensor([[ 0.0417,  0.0292, -0.0569,  ...,  0.0208,  0.0164,  0.0345],\n",
      "        [-0.0398, -0.0378, -0.0407,  ..., -0.0520, -0.0019,  0.0049],\n",
      "        [ 0.0311,  0.0549, -0.0316,  ...,  0.0187, -0.0127,  0.0325],\n",
      "        ...,\n",
      "        [ 0.0178, -0.0047,  0.0186,  ..., -0.0394,  0.0126,  0.0326],\n",
      "        [-0.0542,  0.0173, -0.0064,  ..., -0.0567,  0.0347,  0.0055],\n",
      "        [ 0.0411, -0.0406,  0.0347,  ...,  0.0187,  0.0404, -0.0531]],\n",
      "       requires_grad=True), Parameter containing:\n",
      "tensor([-0.0407,  0.0234, -0.0285, -0.0271,  0.0069,  0.0063,  0.0103, -0.0282,\n",
      "        -0.0027,  0.0525, -0.0069,  0.0456, -0.0460,  0.0499,  0.0095, -0.0408,\n",
      "         0.0071,  0.0370, -0.0431, -0.0282, -0.0522,  0.0506, -0.0019, -0.0161,\n",
      "         0.0067, -0.0350,  0.0116, -0.0437, -0.0106,  0.0397,  0.0381,  0.0030,\n",
      "        -0.0394,  0.0551, -0.0280,  0.0295,  0.0129, -0.0054, -0.0116,  0.0268,\n",
      "         0.0088, -0.0530, -0.0255, -0.0256,  0.0259,  0.0012, -0.0060,  0.0260,\n",
      "        -0.0380,  0.0455,  0.0061, -0.0569, -0.0300, -0.0171, -0.0421,  0.0145,\n",
      "         0.0176,  0.0168,  0.0098, -0.0315,  0.0094,  0.0365, -0.0166, -0.0426,\n",
      "        -0.0217,  0.0461,  0.0021, -0.0040,  0.0185,  0.0315, -0.0388,  0.0334,\n",
      "         0.0458,  0.0562, -0.0049, -0.0571,  0.0168,  0.0113, -0.0546,  0.0288,\n",
      "         0.0260,  0.0417, -0.0165, -0.0238,  0.0402, -0.0097, -0.0510,  0.0211,\n",
      "         0.0072, -0.0406,  0.0094,  0.0220, -0.0421,  0.0006, -0.0154, -0.0220,\n",
      "         0.0215, -0.0333, -0.0029,  0.0442], requires_grad=True), Parameter containing:\n",
      "tensor([[-0.0764,  0.0011, -0.0764,  0.0879,  0.0087,  0.0999, -0.0262, -0.0568,\n",
      "          0.0464, -0.0487,  0.0072,  0.0174, -0.0395, -0.0467, -0.0332, -0.0201,\n",
      "         -0.0675,  0.0643, -0.0841, -0.0684,  0.0355,  0.0873,  0.0378, -0.0783,\n",
      "         -0.0703, -0.0522, -0.0309, -0.0656, -0.0223, -0.0846, -0.0220, -0.0923,\n",
      "          0.0535, -0.0614,  0.0846,  0.0245,  0.0136, -0.0326,  0.0347, -0.0472,\n",
      "         -0.0332,  0.0520, -0.0665, -0.0423, -0.0401, -0.0320, -0.0133,  0.0385,\n",
      "         -0.0980,  0.0304, -0.0424,  0.0664,  0.0910, -0.0303,  0.0631,  0.0687,\n",
      "          0.0879,  0.0495,  0.0036, -0.0027,  0.0230, -0.0822, -0.0125, -0.0826,\n",
      "          0.0728,  0.0232,  0.0944,  0.0937, -0.0055,  0.0908, -0.0216,  0.0144,\n",
      "          0.0139,  0.0789, -0.0460, -0.0524, -0.0995,  0.0515, -0.0059, -0.0383,\n",
      "         -0.0231, -0.0345, -0.0347,  0.0920, -0.0850, -0.0837, -0.0934,  0.0784,\n",
      "         -0.0613, -0.0322,  0.0784,  0.0292, -0.0631,  0.0932, -0.0180,  0.0318,\n",
      "         -0.0282, -0.0309,  0.0345, -0.0020],\n",
      "        [-0.0644, -0.0511,  0.0740, -0.0438, -0.0813, -0.0271, -0.0159,  0.0923,\n",
      "         -0.0287, -0.0010,  0.0512,  0.0364, -0.0504, -0.0260,  0.0288, -0.0275,\n",
      "          0.0370, -0.0769, -0.0415,  0.0104,  0.0259, -0.0312, -0.0354, -0.0409,\n",
      "          0.0728,  0.0134, -0.0190,  0.0188,  0.0366, -0.0111,  0.0428, -0.0602,\n",
      "         -0.0780, -0.0369, -0.0336,  0.0151, -0.0960, -0.0412, -0.0815,  0.0125,\n",
      "         -0.0383, -0.0629,  0.0895, -0.0211, -0.0934, -0.0287, -0.0953, -0.0888,\n",
      "          0.0894,  0.0749,  0.0668, -0.0484, -0.0291,  0.0918, -0.0555,  0.0704,\n",
      "         -0.0104,  0.0835, -0.0905,  0.0238, -0.0243,  0.0128,  0.0637, -0.0794,\n",
      "          0.0602,  0.0332, -0.0379,  0.0161,  0.0165,  0.0833,  0.0414, -0.0249,\n",
      "         -0.0401,  0.0497,  0.0048, -0.0980, -0.0133,  0.0651,  0.0386,  0.0143,\n",
      "         -0.0964, -0.0035, -0.0553, -0.0545,  0.0401, -0.0186, -0.0439,  0.0970,\n",
      "          0.0465, -0.0766,  0.0683, -0.0353, -0.0577, -0.0956, -0.0298,  0.0782,\n",
      "          0.0510,  0.0391,  0.0907, -0.0244],\n",
      "        [-0.0461,  0.0003, -0.0663, -0.0616,  0.0374, -0.0218,  0.0240, -0.0704,\n",
      "          0.0609, -0.0052, -0.0424, -0.0638,  0.0989, -0.0465,  0.0992,  0.0371,\n",
      "         -0.0484,  0.0814, -0.0387,  0.0279, -0.0801,  0.0627, -0.0710,  0.0195,\n",
      "          0.0234,  0.0518, -0.0529,  0.0300,  0.0504,  0.0536,  0.0770, -0.0190,\n",
      "          0.0595,  0.0078, -0.0625,  0.0564,  0.0312,  0.0842,  0.0351,  0.0300,\n",
      "         -0.0390, -0.0633, -0.0885,  0.0689,  0.0570, -0.0626, -0.0601,  0.0722,\n",
      "          0.0828,  0.0232, -0.0954,  0.0096, -0.0439,  0.0178, -0.0818,  0.0361,\n",
      "         -0.0347, -0.0911,  0.0818, -0.0044,  0.0226,  0.0050,  0.0605, -0.0359,\n",
      "          0.0603,  0.0914, -0.0215,  0.0404,  0.0234, -0.0510,  0.0028, -0.0404,\n",
      "          0.0432,  0.0143, -0.0400,  0.0763, -0.0867,  0.0248,  0.0267, -0.0368,\n",
      "          0.0595,  0.0933, -0.0155,  0.0229, -0.0368, -0.0579, -0.0365,  0.0717,\n",
      "         -0.0562,  0.0618, -0.0237, -0.0146,  0.0606, -0.0495,  0.0631,  0.0769,\n",
      "          0.0820, -0.0107,  0.0600,  0.0390],\n",
      "        [-0.0943,  0.0841, -0.0506, -0.0864, -0.0600, -0.0642, -0.0602,  0.0705,\n",
      "         -0.0880, -0.0722, -0.0620,  0.0532,  0.0055,  0.0433,  0.0505,  0.0258,\n",
      "          0.0649, -0.0438, -0.0702,  0.0954,  0.0966, -0.0693, -0.0960,  0.0413,\n",
      "         -0.0463, -0.0588,  0.0766, -0.0858, -0.0695, -0.0252, -0.0513, -0.0628,\n",
      "         -0.0258, -0.0965,  0.0109,  0.0254, -0.0148,  0.0581, -0.0667, -0.0098,\n",
      "         -0.0165,  0.0180, -0.0307, -0.0190,  0.0639, -0.0847, -0.0689, -0.0318,\n",
      "          0.0594,  0.0543,  0.0297,  0.0824, -0.0062,  0.0128,  0.0808, -0.0639,\n",
      "          0.0515, -0.0409, -0.0516,  0.0608,  0.0235,  0.0191,  0.0459, -0.0272,\n",
      "         -0.0702, -0.0662,  0.0983,  0.0292, -0.0208,  0.0482, -0.0578, -0.0038,\n",
      "         -0.0178,  0.0133, -0.0974, -0.0206, -0.0048, -0.0439,  0.0724,  0.0346,\n",
      "          0.0461,  0.0777, -0.0878,  0.0465, -0.0718,  0.0562,  0.0444, -0.0795,\n",
      "         -0.0174, -0.0983,  0.0760,  0.0291,  0.0868,  0.0524,  0.0893,  0.0435,\n",
      "          0.0672, -0.0186, -0.0638, -0.0610],\n",
      "        [-0.0013,  0.0593,  0.0418,  0.0654,  0.0844,  0.0402,  0.0525, -0.0716,\n",
      "          0.0650, -0.0042, -0.0766,  0.0162, -0.0879,  0.0618, -0.0753,  0.0967,\n",
      "         -0.0543,  0.0997, -0.0154, -0.0742,  0.0703,  0.0730, -0.0681, -0.0149,\n",
      "         -0.0939, -0.0274, -0.0570, -0.0540,  0.0445, -0.0201,  0.0933, -0.0459,\n",
      "         -0.0256, -0.0674,  0.0351, -0.0401, -0.0069,  0.0369, -0.0634,  0.0695,\n",
      "         -0.0348, -0.0794,  0.0437, -0.0564, -0.0153,  0.0940,  0.0505,  0.0491,\n",
      "         -0.0764,  0.0145,  0.0653, -0.0280,  0.0465,  0.0754,  0.0850, -0.0738,\n",
      "          0.0361, -0.0422,  0.0631, -0.0409,  0.0199,  0.0536,  0.0705,  0.0697,\n",
      "          0.0147, -0.0422, -0.0214,  0.0822, -0.0451,  0.0323,  0.0736, -0.0315,\n",
      "          0.0693,  0.0810,  0.0877,  0.0735,  0.0326, -0.0416,  0.0754,  0.0992,\n",
      "          0.0095,  0.0876, -0.0837, -0.0417,  0.0215,  0.0547, -0.0213, -0.0852,\n",
      "         -0.0095,  0.0435,  0.0596, -0.0104, -0.0901, -0.0695, -0.0253, -0.0332,\n",
      "          0.0292,  0.0280,  0.0910,  0.0768],\n",
      "        [-0.0419, -0.0404,  0.0127, -0.0812, -0.0023,  0.0315, -0.0233,  0.0072,\n",
      "          0.0672,  0.0792,  0.0483,  0.0126, -0.0810,  0.0813,  0.0830,  0.0770,\n",
      "          0.0041,  0.0794, -0.0461,  0.0779, -0.0648, -0.0499,  0.0182, -0.0624,\n",
      "         -0.0542,  0.0282, -0.0488,  0.0737, -0.0433, -0.0934,  0.0778,  0.0271,\n",
      "         -0.0214, -0.0086, -0.0634, -0.0030,  0.0676, -0.0538,  0.0450,  0.0975,\n",
      "          0.0519,  0.0728,  0.0769,  0.0350, -0.0655,  0.0398, -0.0754, -0.0095,\n",
      "          0.0186, -0.0208, -0.0556, -0.0996, -0.0392,  0.0176,  0.0077,  0.0717,\n",
      "         -0.0844, -0.0704,  0.0634,  0.0625,  0.0125, -0.0838, -0.0234,  0.0477,\n",
      "         -0.0413, -0.0066, -0.0227, -0.0590,  0.0913,  0.0802,  0.0855, -0.0945,\n",
      "         -0.0744, -0.0277,  0.0488,  0.0288, -0.0390, -0.0511, -0.0366,  0.0394,\n",
      "          0.0904,  0.0953, -0.0480,  0.0295,  0.0072,  0.0588,  0.0893, -0.0081,\n",
      "         -0.0218,  0.0638, -0.0137,  0.0368, -0.0200,  0.0177,  0.0505,  0.0172,\n",
      "         -0.0202, -0.0795, -0.0938,  0.0385],\n",
      "        [-0.0998, -0.0421, -0.0311,  0.0725, -0.0863,  0.0818,  0.0119, -0.0337,\n",
      "         -0.0625, -0.0014, -0.0052, -0.0835, -0.0691, -0.0684,  0.0438, -0.0012,\n",
      "         -0.0542,  0.0482, -0.0270, -0.0222,  0.0812, -0.0084,  0.0080,  0.0441,\n",
      "         -0.0240,  0.0150,  0.0402, -0.0171, -0.0554,  0.0437,  0.0515, -0.0336,\n",
      "         -0.0745,  0.0168, -0.0754,  0.0531, -0.0336, -0.0187, -0.0486, -0.0568,\n",
      "          0.0817, -0.0594, -0.0642, -0.0640, -0.0857,  0.0149,  0.0735,  0.0223,\n",
      "         -0.0895,  0.0338, -0.0871, -0.0515, -0.0563,  0.0571,  0.0557, -0.0855,\n",
      "         -0.0221,  0.0603,  0.0119,  0.0773,  0.0813, -0.0801, -0.0389,  0.0057,\n",
      "          0.0559, -0.0608,  0.0113, -0.0288,  0.0177, -0.0124, -0.0941,  0.0321,\n",
      "         -0.0375,  0.0156,  0.0366, -0.0308, -0.0347, -0.0759,  0.0648,  0.0367,\n",
      "          0.0814,  0.0563,  0.0907, -0.0990,  0.0938,  0.0395, -0.0896, -0.0628,\n",
      "          0.0383, -0.0341, -0.0328,  0.0382, -0.0629,  0.0747,  0.0967, -0.0962,\n",
      "         -0.0134, -0.0833,  0.0367,  0.0672],\n",
      "        [ 0.0491,  0.0446, -0.0421, -0.0980, -0.0790, -0.0162,  0.0936, -0.0701,\n",
      "          0.0156,  0.0218,  0.0534,  0.0130,  0.0747,  0.0851,  0.0082, -0.0739,\n",
      "          0.0179,  0.0820,  0.0280,  0.0614, -0.0622,  0.0898, -0.0761,  0.0729,\n",
      "         -0.0653,  0.0937,  0.0127,  0.0962, -0.0628,  0.0450,  0.0366,  0.0771,\n",
      "         -0.0396,  0.0887, -0.0610,  0.0681,  0.0028,  0.0470,  0.0390, -0.0559,\n",
      "         -0.0970,  0.0275, -0.0246,  0.0650, -0.0769, -0.0980, -0.0249, -0.0541,\n",
      "         -0.0792,  0.0226,  0.0286,  0.0342, -0.0727, -0.0337,  0.0914, -0.0807,\n",
      "          0.0171,  0.0188,  0.0392,  0.0817,  0.0780,  0.0456,  0.0288, -0.0967,\n",
      "          0.0329,  0.0563,  0.0530,  0.0803, -0.0774, -0.0100, -0.0283, -0.0921,\n",
      "          0.0580,  0.0852, -0.0856, -0.0820,  0.0910,  0.0390, -0.0618, -0.0986,\n",
      "          0.0304, -0.0158, -0.0534,  0.0043,  0.0064, -0.0782,  0.0912, -0.0938,\n",
      "         -0.0732,  0.0646,  0.0813, -0.0279, -0.0802, -0.0720,  0.0629, -0.0497,\n",
      "          0.0801,  0.0647, -0.0879, -0.0382],\n",
      "        [ 0.0850, -0.0670,  0.0672, -0.0358,  0.0500,  0.0021,  0.0357, -0.0111,\n",
      "          0.0645, -0.0215, -0.0269, -0.0767, -0.0515, -0.0970, -0.0371,  0.0224,\n",
      "          0.0865,  0.0921, -0.0407,  0.0594,  0.0473,  0.0124, -0.0437,  0.0314,\n",
      "          0.0018,  0.0365, -0.0419, -0.0728,  0.0023,  0.0233,  0.0245, -0.0209,\n",
      "         -0.0669,  0.0076,  0.0016, -0.0670,  0.0812, -0.0956,  0.0398, -0.0021,\n",
      "          0.0761, -0.0081,  0.0011,  0.0118, -0.0823, -0.0909, -0.0881, -0.0366,\n",
      "          0.0019, -0.0269, -0.0960,  0.0315, -0.0598,  0.0452, -0.0592,  0.0067,\n",
      "          0.0917, -0.0736, -0.0698, -0.0881,  0.0911,  0.0740, -0.0354, -0.0341,\n",
      "         -0.0251,  0.0964,  0.0167,  0.0978, -0.0093,  0.0268, -0.0762,  0.0934,\n",
      "          0.0674, -0.0592,  0.0162, -0.0287,  0.0815,  0.0238,  0.0669, -0.0753,\n",
      "          0.0714,  0.0635, -0.0015,  0.0012,  0.0482,  0.0545, -0.0352,  0.0006,\n",
      "         -0.0664, -0.0534,  0.0941,  0.0849,  0.0962,  0.0021, -0.0842, -0.0731,\n",
      "          0.0822, -0.0084, -0.0389,  0.0438],\n",
      "        [-0.0043, -0.0911, -0.0410,  0.0859, -0.0491,  0.0552, -0.0964, -0.0434,\n",
      "          0.0245, -0.0087, -0.0481, -0.0676, -0.0179, -0.0454,  0.0218,  0.0335,\n",
      "          0.0888,  0.0039,  0.0217, -0.0564,  0.0382,  0.0335, -0.0849, -0.0008,\n",
      "         -0.0408,  0.0475, -0.0217,  0.0263,  0.0719,  0.0416,  0.0640,  0.0496,\n",
      "         -0.0957,  0.0399,  0.0535, -0.0103,  0.0215, -0.0202, -0.0909,  0.0766,\n",
      "         -0.0540, -0.0733, -0.0013,  0.0683,  0.0310, -0.0414,  0.0949,  0.0732,\n",
      "          0.0103,  0.0798,  0.0769,  0.0230, -0.0016,  0.0810,  0.0667,  0.0575,\n",
      "         -0.0558,  0.0356, -0.0537,  0.0532, -0.0572, -0.0104,  0.0093, -0.0673,\n",
      "          0.0077,  0.0395,  0.0537, -0.0803,  0.0821, -0.0933, -0.0581, -0.0829,\n",
      "          0.0693,  0.0812, -0.0891, -0.0529,  0.0024,  0.0922, -0.0009, -0.0381,\n",
      "          0.0065,  0.0207,  0.0639,  0.0818,  0.0321, -0.0514,  0.0675, -0.0598,\n",
      "         -0.0102,  0.0975, -0.0418,  0.0984,  0.0215,  0.0974, -0.0726, -0.0143,\n",
      "          0.0876, -0.0855, -0.0086, -0.0062]], requires_grad=True), Parameter containing:\n",
      "tensor([ 0.0616,  0.0901,  0.0624,  0.0978, -0.0099,  0.0583,  0.0869, -0.0406,\n",
      "         0.0445,  0.0958], requires_grad=True)]\n"
     ]
    }
   ],
   "execution_count": 11
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": [
    "## 训练\n",
    "\n",
    "pytorch的训练需要自行实现，包括\n",
    "1. 定义损失函数\n",
    "2. 定义优化器\n",
    "3. 定义训练步\n",
    "4. 训练"
   ],
   "id": "920e4a3bd5040e35"
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "定义损失函数,优化器",
   "id": "38572fdb27cbaf0f"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.529565Z",
     "start_time": "2025-03-05T11:22:57.526489Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 定义损失函数\n",
    "loss_func = nn.CrossEntropyLoss()  #  先做了一个softmax，然后计算交叉熵损失\n",
    "# 定义优化器，必须在模型实例化之后,优化器是通过模型参数来更新参数的，SGD是随机梯度下降法，传入模型参数和学习率\n",
    "optimizer = torch.optim.SGD(model.parameters(), lr=0.001, momentum=0.9)  # 优化器，学习率为0.001,动量为0.9"
   ],
   "id": "bb830ab6b32ca88b",
   "outputs": [],
   "execution_count": 12
  },
  {
   "metadata": {},
   "cell_type": "markdown",
   "source": "定义评估函数",
   "id": "8f0bf002f7dfd1bf"
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:22:57.566108Z",
     "start_time": "2025-03-05T11:22:57.529565Z"
    }
   },
   "cell_type": "code",
   "source": [
    "from sklearn.metrics import accuracy_score  # 准确率评估函数\n",
    "\n",
    "\n",
    "@torch.no_grad()  # 装饰器，禁止梯度计算，加快速度\n",
    "def evaluate(model, dataloader, loss_func):\n",
    "    loss_list = []  # 记录损失值\n",
    "    pred_list = []  # 记录预测值\n",
    "    label_list = []  # 记录标签值\n",
    "    for datas, labels in dataloader:\n",
    "        datas = datas.to(device)  # 转到GPU\n",
    "        labels = labels.to(device)  # 转到GPU\n",
    "        # 前向计算\n",
    "        logits = model(datas)   # 对传入的数据进行逻辑回归计算，logits是未经过softmax的概率值\n",
    "        # 计算损失\n",
    "        loss = loss_func(logits, labels)\n",
    "        # 记录损失,item()是取出tensor里的值并转换为python的数值,item()只能取出标量\n",
    "        loss_list.append(loss.item())\n",
    "        # 计算预测值:验证集的预测值是logits，所以不需要softmax,argmax()是取最大值，axis=-1是取最后一维\n",
    "        preds = logits.argmax(axis=-1)\n",
    "        # 记录预测值\n",
    "        pred_list.extend(preds.cpu().numpy().tolist())\n",
    "        # 记录标签值\n",
    "        label_list.extend(labels.cpu().numpy().tolist())\n",
    "    # 计算准确率\n",
    "    acc = accuracy_score(label_list, pred_list)  # y_true, y_pred\n",
    "    # 返回平均损失值和准确率\n",
    "    return np.mean(loss_list), acc"
   ],
   "id": "c0998273f45e43d",
   "outputs": [],
   "execution_count": 13
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:28:54.525343Z",
     "start_time": "2025-03-05T11:22:57.566614Z"
    }
   },
   "cell_type": "code",
   "source": [
    "# 训练函数（）：\n",
    "def training(model, train_loader, val_loader, epoch, loss_func, optimizer, eval_step=500):\n",
    "    # 记录训练过程中的损失值和准确率\n",
    "    record_dict = {\n",
    "        \"train\": [],\n",
    "        \"val\": []\n",
    "    }\n",
    "\n",
    "    global_step = 0  # 记录全局步数\n",
    "    # 开启训练模式\n",
    "    model.train()\n",
    "    # 显示训练信息\n",
    "    with tqdm(total=epoch * len(train_loader)) as pbar:  # 进度条\n",
    "        # 训练epoch次\n",
    "        for epoch_id in range(epoch):\n",
    "            # 训练集训练\n",
    "            for datas, labels in train_loader:  # 执行次数是60000/32=1875\n",
    "                # 转到GPU\n",
    "                datas = datas.to(device)\n",
    "                labels = labels.to(device)\n",
    "                # 梯度清零:梯度是累加的，所以每次训练前要清零\n",
    "                optimizer.zero_grad()\n",
    "                # 前向计算:计算logits\n",
    "                logits = model(datas)\n",
    "                # 计算损失:交叉熵损失函数\n",
    "                loss = loss_func(logits, labels)\n",
    "                # 梯度回转：loss.backward()计算出梯度(求导)，optimizer.step()更新参数\n",
    "                loss.backward()\n",
    "                # 优化器更新参数:包括许欸效率的变化，优化器的学习会随着训练的进行而减小\n",
    "                optimizer.step()\n",
    "\n",
    "                # 计算预测值\n",
    "                preds = logits.argmax(axis=-1)  # 训练集预测\n",
    "                # 每64个batch打印一次训练信息,从gpu中取出再转到cpu，转为numpy\n",
    "                acc = accuracy_score(labels.cpu().numpy(), preds.cpu().numpy())\n",
    "                loss = loss.cpu().item()  # 损失值\n",
    "\n",
    "                # 记录训练信息\n",
    "                record_dict[\"train\"].append({\n",
    "                    \"loss\": loss,\n",
    "                    \"acc\": acc,\n",
    "                    \"step\": global_step\n",
    "                })\n",
    "\n",
    "                # \n",
    "                if global_step % eval_step == 0:\n",
    "                    model.eval()  # 进入评估模式\n",
    "                    val_loss, val_acc = evaluate(model, val_loader, loss_func)\n",
    "                    record_dict[\"val\"].append({\n",
    "                        \"loss\": val_loss, \"acc\": val_acc, \"step\": global_step\n",
    "                    })\n",
    "                    model.train()  # 进入训练模式\n",
    "\n",
    "                global_step += 1  # 全局步数加1\n",
    "                pbar.update(1)  # 更新进度条\n",
    "                pbar.set_postfix({\"epoch\": epoch_id})  # 设置进度条显示信息\n",
    "    return record_dict\n",
    "\n",
    "\n",
    "epoch = 20  # 训练的epoch次数\n",
    "model = model.to(device)  # 转到GPU\n",
    "record = training(model, train_loader, val_loader, epoch, loss_func, optimizer, eval_step=1000)"
   ],
   "id": "6025e0fbe82c7362",
   "outputs": [
    {
     "data": {
      "text/plain": [
       "  0%|          | 0/37500 [00:00<?, ?it/s]"
      ],
      "application/vnd.jupyter.widget-view+json": {
       "version_major": 2,
       "version_minor": 0,
       "model_id": "54cf747ed3634f0f85870fca04540775"
      }
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 14
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:28:54.537990Z",
     "start_time": "2025-03-05T11:28:54.526345Z"
    }
   },
   "cell_type": "code",
   "source": [
    "print(record[\"train\"][-5:])\n",
    "print(record[\"val\"][-5:])"
   ],
   "id": "2682b20338198c55",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[{'loss': 0.17603035271167755, 'acc': 0.96875, 'step': 37495}, {'loss': 0.12143892049789429, 'acc': 0.96875, 'step': 37496}, {'loss': 0.12593944370746613, 'acc': 0.96875, 'step': 37497}, {'loss': 0.23510658740997314, 'acc': 0.96875, 'step': 37498}, {'loss': 0.18470638990402222, 'acc': 0.9375, 'step': 37499}]\n",
      "[{'loss': np.float64(0.3137280883047337), 'acc': 0.8904, 'step': 33000}, {'loss': np.float64(0.32952480576337334), 'acc': 0.8841, 'step': 34000}, {'loss': np.float64(0.3272565511730723), 'acc': 0.886, 'step': 35000}, {'loss': np.float64(0.31917748440164156), 'acc': 0.8868, 'step': 36000}, {'loss': np.float64(0.31906084048029143), 'acc': 0.8888, 'step': 37000}]\n"
     ]
    }
   ],
   "execution_count": 15
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:28:56.562133Z",
     "start_time": "2025-03-05T11:28:54.539996Z"
    }
   },
   "cell_type": "code",
   "source": [
    "model.eval()  # 进入评估模式,模型的状态变为评估模式，不启用dropout等\n",
    "loss, acc = evaluate(model, val_loader, loss_func)\n",
    "print(f\"loss:     {loss:.4f}\\naccuracy: {acc:.4f}\")"
   ],
   "id": "4c7d01df6d7763fd",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "loss:     0.3197\n",
      "accuracy: 0.8904\n"
     ]
    }
   ],
   "execution_count": 16
  },
  {
   "metadata": {
    "ExecuteTime": {
     "end_time": "2025-03-05T11:28:56.756541Z",
     "start_time": "2025-03-05T11:28:56.563139Z"
    }
   },
   "cell_type": "code",
   "source": [
    "#画线要注意的是损失是不一定在零到1之间的\n",
    "def plot_learning_curves(record_dict, sample_step=1000):\n",
    "    # build DataFrame\n",
    "    train_df = pd.DataFrame(record_dict[\"train\"]).set_index(\"step\").iloc[::sample_step]\n",
    "    val_df = pd.DataFrame(record_dict[\"val\"]).set_index(\"step\")\n",
    "    last_step = train_df.index[-1]  # 最后一步的步数\n",
    "    # print(train_df.columns)\n",
    "    print(train_df['acc'])\n",
    "    print(val_df['acc'])\n",
    "    # plot\n",
    "    fig_num = len(train_df.columns)  # 画几张图,分别是损失和准确率\n",
    "    fig, axs = plt.subplots(1, fig_num, figsize=(5 * fig_num, 5))\n",
    "    for idx, item in enumerate(train_df.columns):\n",
    "        # print(train_df[item].values)\n",
    "        axs[idx].plot(train_df.index, train_df[item], label=f\"train_{item}\")\n",
    "        axs[idx].plot(val_df.index, val_df[item], label=f\"val_{item}\")\n",
    "        axs[idx].grid()  # 显示网格\n",
    "        axs[idx].legend()  # 显示图例\n",
    "        axs[idx].set_xticks(range(0, train_df.index[-1], 5000))  # 设置x轴刻度\n",
    "        axs[idx].set_xticklabels(map(lambda x: f\"{int(x / 1000)}k\", range(0, last_step, 5000)))  # 设置x轴标签\n",
    "        axs[idx].set_xlabel(\"step\")\n",
    "\n",
    "    plt.show()\n",
    "\n",
    "\n",
    "plot_learning_curves(record)  #横坐标是 steps"
   ],
   "id": "e6f9ffaeed59f8f2",
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "step\n",
      "0        0.03125\n",
      "1000     0.81250\n",
      "2000     0.84375\n",
      "3000     0.84375\n",
      "4000     0.90625\n",
      "5000     0.90625\n",
      "6000     0.90625\n",
      "7000     0.84375\n",
      "8000     0.87500\n",
      "9000     0.93750\n",
      "10000    0.90625\n",
      "11000    0.87500\n",
      "12000    0.90625\n",
      "13000    0.84375\n",
      "14000    0.90625\n",
      "15000    0.93750\n",
      "16000    0.93750\n",
      "17000    0.87500\n",
      "18000    0.96875\n",
      "19000    0.93750\n",
      "20000    1.00000\n",
      "21000    0.90625\n",
      "22000    0.81250\n",
      "23000    0.90625\n",
      "24000    0.87500\n",
      "25000    0.96875\n",
      "26000    1.00000\n",
      "27000    0.90625\n",
      "28000    0.96875\n",
      "29000    0.96875\n",
      "30000    0.93750\n",
      "31000    0.90625\n",
      "32000    0.93750\n",
      "33000    0.87500\n",
      "34000    0.93750\n",
      "35000    0.90625\n",
      "36000    0.84375\n",
      "37000    0.93750\n",
      "Name: acc, dtype: float64\n",
      "step\n",
      "0        0.0934\n",
      "1000     0.7905\n",
      "2000     0.8227\n",
      "3000     0.8382\n",
      "4000     0.8390\n",
      "5000     0.8509\n",
      "6000     0.8575\n",
      "7000     0.8583\n",
      "8000     0.8599\n",
      "9000     0.8657\n",
      "10000    0.8578\n",
      "11000    0.8711\n",
      "12000    0.8735\n",
      "13000    0.8707\n",
      "14000    0.8762\n",
      "15000    0.8687\n",
      "16000    0.8639\n",
      "17000    0.8785\n",
      "18000    0.8784\n",
      "19000    0.8646\n",
      "20000    0.8794\n",
      "21000    0.8820\n",
      "22000    0.8766\n",
      "23000    0.8746\n",
      "24000    0.8840\n",
      "25000    0.8824\n",
      "26000    0.8775\n",
      "27000    0.8855\n",
      "28000    0.8765\n",
      "29000    0.8848\n",
      "30000    0.8841\n",
      "31000    0.8877\n",
      "32000    0.8795\n",
      "33000    0.8904\n",
      "34000    0.8841\n",
      "35000    0.8860\n",
      "36000    0.8868\n",
      "37000    0.8888\n",
      "Name: acc, dtype: float64\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "<Figure size 1000x500 with 2 Axes>"
      ],
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAAzoAAAHACAYAAABqJx3iAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjkuMSwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy/TGe4hAAAACXBIWXMAAA9hAAAPYQGoP6dpAAC/Z0lEQVR4nOzdd3xV9f3H8dfd2YSVsMLeyEYRcMtQFDdat/anbVValda22LpbaWsdrbPVqq1V66iiFVQiiihD9h6yE0YCSQgh687z++PcGwJJIOMm9yb3/Xw87gPuzTn3fu6F3HM+5/v5fr4WwzAMREREREREWhBrpAMQEREREREJNyU6IiIiIiLS4ijRERERERGRFkeJjoiIiIiItDhKdEREREREpMVRoiMiIiIiIi2OEh0REREREWlxlOiIiIiIiEiLY490ALURCATYt28fycnJWCyWSIcjIhIzDMPgyJEjdOrUCatV18ZCdFwSEYmc2h6bmkWis2/fPjIyMiIdhohIzMrOzqZLly6RDiNq6LgkIhJ5Jzs2NYtEJzk5GTDfTEpKSp3393q9zJ07l4kTJ+JwOMIdXlgp1sbTnOJVrI2jOcUK0RFvUVERGRkZFd/DYoql4xI0r3gVa+NpTvEq1sYRLbHW9tjULBKdUFlASkpKvQ8oCQkJpKSkNIv/QIq1cTSneBVr42hOsUJ0xavyrGPF0nEJmle8irXxNKd4FWvjiLZYT3ZsUsG1iIiIiIi0OEp0RERERESkxVGiIyIiIiIiLU6zmKMjItHJMAx8Ph92u53y8nL8fn+kQzohr9fbbGKFponXZrNht9s1B0dERFocJToiUi8ej4f9+/dTUlJChw4dyM7OjvqTZcMwmk2s0HTxJiQk0LFjR5xOZ6O9hoiISFNToiMidRYIBNi5cyc2m41OnTrh8XhISkqK+gUlA4EAxcXFzSJWaPx4DcPA4/Fw8OBBdu7cSZ8+fZrF5yIiIlIbSnREpM48Hg+BQICMjAzi4uIoKioiLi4u6k+SA4EAHo+nWcQKTRNvfHw8DoeD3bt3V7yWiIhISxD9R3oRiVrNIVmQk9O/o4iItEQ6uomIiIiISIujREdERERERFocJToiIvXUvXt3nnnmmbA81/z587FYLBQWFobl+WLJggULmDJlCp06dcJisTBr1qyT7jN//nxGjBiBy+Wid+/evP76640ep4iINC0lOiISUy6++GLuvffesDzXsmXL+NGPfhSW55L6KykpYejQoTz//PO12n7nzp1cdNFFnHvuuaxevZp77rmH2267jc8//7yRIxURkaakrmsiIpUYhoHf78duP/nXY/v27ZsgIjmZCy+8kAsvvLDW27/00kv06NGDJ598EoABAwbw7bff8vTTTzNp0qTGClNERJpYi090Fm7L47FPNpLkszI50sGItFCGYVDq8UWke1e8w1brxTRvvfVWFi5cyMKFC/nrX/8KwGuvvcatt97KnDlz+O1vf8u6deuYO3cuGRkZTJ8+nSVLllBSUsKAAQOYOXMm48ePr3i+7t27c88993DPPfcAYLFYePnll5k9ezaff/45nTt35sknn+SSSy6p13v773//y4MPPsiOHTvo2LEjP/3pT/n5z39e8fMXXniBp59+muzsbFq1asWZZ57J+++/D8D777/PI488wrZt20hISGD48OF89NFHJCYm1iuWlmTx4sXH/DsCTJo0qeLfsTputxu3211xv6ioCACv14vX661zDKF96rNvJDSneBVr49iZV8Kjn2xiZFzziPdkn+2K3Yf461fbuW9CX07pnNKUoVXRnP4fREustX39Fp/oBA5l0//Ap7jiEoALIh2OSItU7g0w/I+ZEXntjY9OIsFZu6+yZ555hk2bNjF06FAee+wxADZs2ADAr3/9a/785z/Ts2dPWrduTXZ2NpMnT+b3v/89LpeLf/3rX0yZMoUtW7bQtWvXGl/jkUce4U9/+hNPPPEEzz77LNdffz27d++mTZs2dXpfK1as4Ac/+AG//vWvufHGG1myZAl33nknbdu25ZZbbmH58uX87Gc/44033mDs2LEUFBTwzTffALB//36uvfZa/vSnP3H55Zdz5MgRvvnmGwzDqFMMLVVOTg7p6enHPJaenk5RURFlZWXEx8dX2WfmzJk88sgjVR6fO3cuCQkJ9Y4lMzMyvzf11ZziVazh9fr3VlblW8lPtdKzGcQbUt1nW+iGP621UeKz8FjhIm7uG4hAZFU1h/8HIZGOtbS0tFbbtfhEp03RRp5xvsDaQB/g15EOR0QiqFWrVjidThISEujQoQMAmzdvBuDRRx9lwoQJFdu2adOGoUOHVtx/7LHH+PDDD/n444+ZNm1aja9xyy23cO211wLw+OOP89e//pWlS5dywQV1u9Dy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jAwmTpxISkpKnV/f6/WSmZnJhAkTcDgcVX5+4Igbln3ND2zzyShcgmGx4bzu30zoclqdXyscThZvNFGsjac5xatYG0e0xBoaVT+ZmEl07DYbPsOK3RLAU16KKznSEYmISDi0a9cOm81Gbm7uMY/n5ubSoUOHavd54IEHuPHGG7ntNrM98+DBgykpKeFHP/oRv/nNb7AeV97scrlwuVxVnsfhcDToYF/T/gG89LVk87D9dQAs5z+Avce4er9OuDT0/TYlxdp4mlO8irVxRDrW2r52zExUsVnAjfmheMrLIhyNiIiEi9PpZOTIkcybN6/isUAgwLx58xgzZky1+5SWllZJZmw2GwCGYTResLXk9vmZ6XiFOIsXep0PY++OdEgiIs1OzIzoWCzgwUkibrzu2tX1iYhI8zB9+nRuvvlmRo0axWmnncYzzzxDSUkJt956KwA33XQTnTt3ZubMmQBMmTKFp556iuHDh1eUrj3wwANMmTKlIuGJpHJvgL6WPeadSb9XAx0RkXqImUQHwGMxR3S8nuhZEE5ERBrummuu4eDBgzz44IPk5OQwbNgwPvvss4oGBVlZWceM4Pz2t7/FYrHw29/+lr1799K+fXumTJnC73//+0i9hWO4fQHiQsshxLWKbDAiIs1UTCU6bszOa75yjeiIiLQ006ZNY9q0adX+bP78+cfct9vtPPTQQzz00ENNEFndeTweHJZgi2l7XGSDERFppmJqLNxrCSY6Hs3RERGR6OVzlxy9o0RHRKReYjLRCSjRERGRKOZzVzpOKdEREamXmEp0fMFEx685OiIiEsVClQceHGpEICJSTzH17emzBhMdrxIdERGJXr5gd1CvteraPSIiUjsxluiYB4yAV6VrIiISvUIl1l6LEh0RkfqKqUTHHxzRMTRHR0REolgo0QlVIoiISN3FWKITGtFxRzgSERGRmhneUKKjER0RkfqKqUQnYAseMHyaoyMiItErEJxL6leiIyJSbzGZ6BhKdEREJIqFRnT8NrWWFhGpr5hKdIxgomPxqXRNRESiWGhEx6YRHRGR+oqpRCcQujKmER0REYlmPnNEJ6BER0Sk3mIq0cFuHjCsfiU6IiISvSzBC3KGStdEROotJhMdi1+layIiEr1CJdYBuxIdEZH6islEx6pER0REolhF5YESHRGReoupRMfiiAfA6vdEOBIREZGa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"
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "execution_count": 17
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.6"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
